NFS est un protocole historique de partage de fichiers entre machines UNIX (famille de systèmes d’exploitation dont Linux et Mac OS X font partie). Si vous souhaitez partager des fichiers avec des clients Windows, le partage par Samba que nous verrons dans le prochain chapitre pourrait être plus adapté.
Vous allez utiliser NFS 4 qui apporte beaucoup d’améliorations par rapport aux versions précédentes. Une des plus notables est l’utilisation d’un port TCP unique et configurable là où les versions précédentes utilisaient plusieurs ports TCP, parfois alloués dynamiquement, ce qui rendait difficile l’utilisation de NFS avec un pare-feu.
Le serveur virtuel que vous avez monté n’a pas de pare-feu mais si c’était le cas, le port par défaut alloué à NFSv4 et qu’il faudrait ouvrir serait le port TCP 2049 entrant.
NFS est prévu pour fonctionner sur un réseau local. Vous ne devriez pas l’utiliser pour partager des fichiers sur internet sauf si vous passez par un VPN. Même dans ce cas, il y a souvent des solutions plus adaptées.
Dans ce chapitre, vous allez partager par NFS les deux partitions de données sous LVM+RAID :
•.la première servira aux clients à stocker leurs fichiers personnels, comme une extension de leur répertoire /home en ligne
•.la deuxième sera un répertoire partagé commun à tous les utilisateurs
Voyons ensemble comment configurer le serveur.
Tout d’abord, vous allez créer une arborescence de partage /export dans laquelle seront montés tous les répertoires à partager. Ça n’est pas une étape obligatoire mais plutôt une “bonne pratique”. Le fait de séparer votre arborescence partagée permet d’avoir une configuration plus claire et offre un niveau de sécurité supérieur :
$ sudo mkdir /export/home
$ sudo mkdir /export/share
Vous allez monter /var/data1 dans /export/home et /var/data2 dans /export/shared grâce à un montage de type “bind”. C’est une option de montage qui permet de monter plusieurs fois un système de fichiers : /var/data1 et /export/home pointeront vers les mêmes données, comme deux archers qui viseraient la même cible. Pour cela, rajoutez dans votre fichier /etc/fstab :
/var/data1 /export/home none rw,bind 0 0
/var/data2 /export/shared none rw,bind 0
On peut alors réaliser ces montages par un mount -a .
Une fois notre arborescence créée, installez le serveur NFS par la commande :
$ sudo apt-get install nfs-server
Vos partages NFS sont définis dans le fichier /etc/exports . Chaque ligne commençant par # est un commentaire. Ajoutez les lignes suivantes :
/export 192.168.0.0/24(ro,sync,root_squash,no_subtree_check,fsid=0)
/export/home 192.168.0.0/24(rw,sync,root_squash,no_subtree_check)
/export/shared 192.168.0.0/24(rw,sync,all_squash,no_subtree_check)
Pour chaque ligne, on indique le répertoire à partager, puis une tabulation et le réseau avec lequel on souhaite partager ce répertoire et les options de partage entre parenthèse. On peut indiquer plusieurs réseaux avec chacun leurs propres options de partage en les séparant par des espaces.
Voici le détail des options qu’on a utilisées :
Vous pouvez valider vos changements de configuration et vérifier vos partages actifs par les commandes :
$ sudo showmount -e localhos
Il ne nous reste plus qu’à utiliser nos partages sur notre client.
Sur votre client, pour pouvoir monter votre partage réseau, vous devrez installer le paquet nfs-common et créer le point de montage de votre partage NFS :
$ sudo apt-get install nfs-common
$ sudo mkdir /mnt/resea
Vous pouvez alors indiquer la ligne suivante dans votre fichier /etc/fstab pour monter votre partage réseau :
vm-serveur:/ /mnt/reseau nfs4 rw,hard,intr,_netdev 0 0
On indique donc qu’on veut monter la racine / du partage réseau sur vm-serveur dans /mnt/reseau . Le système de fichier est de type nfs4 et voici le détail des options :
Vous pouvez alors monter votre partage réseau par la commande mount -a . Dans /mnt/reseau , vous retrouvez bien vos deux répertoires partagés home et shared mais si vous essayez d’écrire dedans, vous voyez que vous n’avez pas les droits. Pire, même avec un sudo , vous n’avez pas les droits. C’est normal, sur le serveur ces répertoires appartiennent à root:root et l’utilisateur root du client est reconnu comme nobody . Corrigeons donc ce problème de droits. Sur le serveur vm-serveur, faites :
$ sudo mkdir /export/home/etienne #Sur mon client, mon utilisateur est etienne
$ sudo chown 1000:1000 /export/home/etienne #Sur mon client, UID et GID de l’utilisateur etienne
$ sudo chown nobody:nogroup /export/share
Retournez sur le client, vous pouvez maintenant écrire dans /mnt/reseau/home/etienne et tous vos fichiers appartiennent à votre utilisateur en cours. Vous pouvez aussi écrire dans /mnt/reseau/shared et tous les fichiers que vous écrivez appartiennent à nobody .
Une des grandes forces de NFS c’est de respecter les droits UNIX. Depuis Linux, sur un partage NFS, vous pouvez donc faire quasiment tout ce que vous feriez sur un système de fichiers local. L’inconvénient, c’est qu’il faut s’assurer que sur toutes les machines de notre réseau vous avez les mêmes UID pour tous les utilisateurs. Si Etienne a l’UID 1000 sur un client, il doit avoir l’UID 1000 sur tous les clients. Si Marie a l’UID 1000 sur un poste client, elle pourra accéder aux fichiers d’Etienne depuis ce poste !
NFS est un outil puissant pour partager des fichiers dans un réseau UNIX. Malheureusement, s’il est parfaitement intégré sur Linux, il n’est pas disponible nativement sous Windows. Aussi, si votre réseau comporte des clients Windows, vous préférerez peut-être utiliser Samba, que nous allons découvrir ensemble, dans la partie suivante.
•.NFS permet de partager des fichiers sur un réseau local UNIX. La dernière version du protocole est la version 4
•.Vous avez pu très simplement partager une arborescence de répertoires depuis votre serveur et la monter sur votre client
•.NFS respecte les droits UNIX ce qui permet de profiter de la puissance de ce système sur vos partages
•.L’utilisation des droits UNIX avec NFS impose que chaque utilisateur ait les mêmes UID sur tous les postes clients